﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tibet.Entidades;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;
using Tibet.Datos.FabricaDatos;
using Tibet.Datos.Interfaces;

namespace Tibet.Logica
{
    class ReporteNORM : Tibet.Logica.Reporte
    {
        private int cant;
        private List<ErrorP> lista;
        public ReporteNORM(String Nombre, int Proyecto)
        {
            this.Nombre = Nombre;
            this.Proyecto = Proyecto;
            CargarDatos();
        }
        public override string Graficar()
        {
            int pe = 0;
            int j = 0;
            int maxcantidad = 0;
            if (lista != null)
            {
                for (int i = 0; i < lista.Count; i++)
                {
                    pe = lista.ElementAt(i).Cant;
                    j = i;

                    if (pe > maxcantidad)
                    {
                        maxcantidad = pe;
                    }
                }
            }
            Chart myChart = new Chart();
            myChart.Height = 350;
            myChart.Width = 350;
            ChartArea myChartArea = new ChartArea();
            myChart.ChartAreas.Add(myChartArea);

            Series series = new Series("mySeries");
            if (lista.Count > 0)
            {
                for (int i = 0; i < lista.Count; i++)
                {
                    series.Points.AddXY(lista.ElementAt(i).mes, lista.ElementAt(i).Cant);

                }
            }

            myChart.Series.Add(series);

            Font font = new Font("Arial", 20, FontStyle.Bold);
            Title title = new Title();
            title.Text = this.Nombre;
            title.Font = font;

            myChart.Titles.Add(title);

            myChart.SaveImage(@"C:\aplicaciones\Tercera Entrega\Tibet\Tibet\ImagenesEstadistica\ReporteNORM", ChartImageFormat.Png);
            return "<img src='../../ImagenesEstadistica/ReporteNORM' />";
        }

        public override void CargarDatos()
        {
            FabricaDao fab = FabricaDao.ObtenerFabricaDeDao(1);
            IDaoAccesoReporte repbd = fab.ObtenerDaoSqlServerReporte();
            List<ErrorP> listametricas = new List<ErrorP>();
            listametricas = repbd.ConsultarMetricas(this.Proyecto, "Numero de Metodos Sobrecargados", 5);
            cant = listametricas.Count;
            lista = listametricas;
        }

        public override string MostrarDatos()
        {
            String salida;
            salida = "<p>";
            salida = salida + "Cantidad de Metodos Estaticos </br>";
            for (int i = 0; i < cant; i++)
            {
                salida = salida + lista[i].mes + ":" + lista[i].Cant + "</br>";
            }
            salida = salida + "</p>";
            return salida;
        }
    }
}
